¡todo el mundo! Soy nuevo en la programación así que espero su ayuda! Estoy tratando de regresar e indexar la matriz, pero no tengo idea de qué significa el error. Tengo este por primera vez.
esta es mi primera clase
using System; using System.Linq; public class Group { private Student[] students; public Group(Student[] students) { if(students.Length < 5) { throw new ArgumentException("Incorrect group"); } this.students = students; } public int IndexOfMaxGrade() { Student[] sorted = students.OrderBy(c => c.grade).ToArray(); //int max = sorted[^1].grade; //foreach (var item in students) //{ // if(item.grade == max) // { // } //} return Array.IndexOf(students, sorted[^1].grade); } public int IndexOfMinGrade() { Student[] sorted = students.OrderBy(c => c.grade).ToArray(); return Array.IndexOf(students, sorted[0].grade); } }y obtuve "No se puede aplicar la indexación con [] a una expresión de tipo 'tipo'" en este código (últimas 2 líneas)
Group studentGroup; try { studentGroup = new Group(students.ToArray()); } catch (ArgumentException argumentException) { Console.WriteLine(argumentException.Message); return; } Console.WriteLine(studentGroup[studentGroup.IndexOfMinGrade()]); Console.WriteLine(studentGroup[studentGroup.IndexOfMaxGrade()]); } }Si desea indexar un Group directamente, deberá proporcionar un indexador:
public class Group { public Student this[int i]{ get { return students[i]; } set { students[i] = value; } } ...Verá, su grupo tiene una matriz de estudiantes, pero eso no significa que sea, en sí mismo, directamente indexable como lo es una matriz.
cuando lo hiciste:
Group studentGroup = ...Más tarde intentó acceder a algo en algún índice dentro del Grupo:
studentGroup[studentGroup.IndexOfMinGrade()]; //like this studentGroup[1]; //or like this, for example C# no mirará su tipo de grupo y pensará "solo tiene un elemento de datos dentro, que es una matriz, por lo que permitiré que alguien coloque un especificador de índice como [1] junto a una instancia de un grupo, y yo' recuperaré el elemento desde dentro de la matriz interna"..
..solo dice "no se puede indexar un grupo"
Si agrega un indexador, entonces felices días. También podrías haber hecho algo como:
class Group{ ... public Student GetStudentAt(int index){ return students[index]; }Y luego llamó:
Console.WriteLine(studentGroup.GetStudentAt(studentGroup.IndexOfMinGrade()));Conceptualmente equivalente..